{
  "cells": [
    {
      "cell_type": "markdown",
      "source": [
        "# LTSM Neural Networks"
      ],
      "metadata": {
        "nteract": {
          "transient": {
            "deleting": false
          }
        }
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "### Long short-term memory is an artificial recurrent neural network architecture used in the field of deep learning. Unlike standard feedforward neural networks, LSTM has feedback connections. It can not only process single data points, but also entire sequences of data. (Wikipedia)"
      ],
      "metadata": {
        "nteract": {
          "transient": {
            "deleting": false
          }
        }
      }
    },
    {
      "cell_type": "code",
      "source": [
        "import numpy as np\n",
        "import pandas as pd\n",
        "import matplotlib.pyplot as plt\n",
        "import time\n",
        "\n",
        "import warnings\n",
        "warnings.filterwarnings(\"ignore\")\n",
        "\n",
        "# yahoo_finance is used to fetch data \n",
        "import yfinance as yf\n",
        "yf.pdr_override()"
      ],
      "outputs": [],
      "execution_count": null,
      "metadata": {
        "collapsed": true,
        "jupyter": {
          "source_hidden": false,
          "outputs_hidden": false
        },
        "nteract": {
          "transient": {
            "deleting": false
          }
        }
      }
    },
    {
      "cell_type": "code",
      "source": [
        "# input\n",
        "symbol = 'AMD'\n",
        "start = '2014-01-01'\n",
        "end = '2018-08-27'\n",
        "\n",
        "# Read data \n",
        "df = yf.download(symbol,start,end)\n",
        "\n",
        "# View Columns\n",
        "df.head()"
      ],
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "[*********************100%***********************]  1 of 1 completed\n"
          ]
        },
        {
          "output_type": "execute_result",
          "execution_count": 2,
          "data": {
            "text/plain": "            Open  High   Low  Close  Adj Close    Volume\nDate                                                    \n2014-01-02  3.85  3.98  3.84   3.95       3.95  20548400\n2014-01-03  3.98  4.00  3.88   4.00       4.00  22887200\n2014-01-06  4.01  4.18  3.99   4.13       4.13  42398300\n2014-01-07  4.19  4.25  4.11   4.18       4.18  42932100\n2014-01-08  4.23  4.26  4.14   4.18       4.18  30678700",
            "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>Open</th>\n      <th>High</th>\n      <th>Low</th>\n      <th>Close</th>\n      <th>Adj Close</th>\n      <th>Volume</th>\n    </tr>\n    <tr>\n      <th>Date</th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>2014-01-02</th>\n      <td>3.85</td>\n      <td>3.98</td>\n      <td>3.84</td>\n      <td>3.95</td>\n      <td>3.95</td>\n      <td>20548400</td>\n    </tr>\n    <tr>\n      <th>2014-01-03</th>\n      <td>3.98</td>\n      <td>4.00</td>\n      <td>3.88</td>\n      <td>4.00</td>\n      <td>4.00</td>\n      <td>22887200</td>\n    </tr>\n    <tr>\n      <th>2014-01-06</th>\n      <td>4.01</td>\n      <td>4.18</td>\n      <td>3.99</td>\n      <td>4.13</td>\n      <td>4.13</td>\n      <td>42398300</td>\n    </tr>\n    <tr>\n      <th>2014-01-07</th>\n      <td>4.19</td>\n      <td>4.25</td>\n      <td>4.11</td>\n      <td>4.18</td>\n      <td>4.18</td>\n      <td>42932100</td>\n    </tr>\n    <tr>\n      <th>2014-01-08</th>\n      <td>4.23</td>\n      <td>4.26</td>\n      <td>4.14</td>\n      <td>4.18</td>\n      <td>4.18</td>\n      <td>30678700</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
          },
          "metadata": {}
        }
      ],
      "execution_count": 2,
      "metadata": {
        "collapsed": true,
        "jupyter": {
          "source_hidden": false,
          "outputs_hidden": false
        },
        "nteract": {
          "transient": {
            "deleting": false
          }
        },
        "execution": {
          "iopub.status.busy": "2021-06-10T01:48:35.448Z",
          "iopub.execute_input": "2021-06-10T01:48:35.462Z",
          "iopub.status.idle": "2021-06-10T01:48:35.497Z",
          "shell.execute_reply": "2021-06-10T01:48:35.012Z"
        }
      }
    },
    {
      "cell_type": "code",
      "source": [
        "df.info()"
      ],
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "<class 'pandas.core.frame.DataFrame'>\n",
            "DatetimeIndex: 1171 entries, 2014-01-02 to 2018-08-24\n",
            "Data columns (total 6 columns):\n",
            " #   Column     Non-Null Count  Dtype  \n",
            "---  ------     --------------  -----  \n",
            " 0   Open       1171 non-null   float64\n",
            " 1   High       1171 non-null   float64\n",
            " 2   Low        1171 non-null   float64\n",
            " 3   Close      1171 non-null   float64\n",
            " 4   Adj Close  1171 non-null   float64\n",
            " 5   Volume     1171 non-null   int64  \n",
            "dtypes: float64(5), int64(1)\n",
            "memory usage: 64.0 KB\n"
          ]
        }
      ],
      "execution_count": 3,
      "metadata": {
        "collapsed": true,
        "jupyter": {
          "source_hidden": false,
          "outputs_hidden": false
        },
        "nteract": {
          "transient": {
            "deleting": false
          }
        },
        "execution": {
          "iopub.status.busy": "2021-06-10T01:48:35.519Z",
          "iopub.execute_input": "2021-06-10T01:48:35.532Z",
          "iopub.status.idle": "2021-06-10T01:48:35.552Z",
          "shell.execute_reply": "2021-06-10T01:48:35.045Z"
        }
      }
    },
    {
      "cell_type": "code",
      "source": [
        "df['Adj Close'].describe()"
      ],
      "outputs": [
        {
          "output_type": "execute_result",
          "execution_count": 4,
          "data": {
            "text/plain": "count    1171.000000\nmean        7.000196\nstd         4.860349\nmin         1.620000\n25%         2.705000\n50%         4.270000\n75%        11.550000\nmax        23.980000\nName: Adj Close, dtype: float64"
          },
          "metadata": {}
        }
      ],
      "execution_count": 4,
      "metadata": {
        "collapsed": true,
        "jupyter": {
          "source_hidden": false,
          "outputs_hidden": false
        },
        "nteract": {
          "transient": {
            "deleting": false
          }
        },
        "execution": {
          "iopub.status.busy": "2021-06-10T01:48:35.570Z",
          "iopub.execute_input": "2021-06-10T01:48:35.583Z",
          "iopub.status.idle": "2021-06-10T01:48:35.605Z",
          "shell.execute_reply": "2021-06-10T01:48:35.056Z"
        }
      }
    },
    {
      "cell_type": "code",
      "source": [
        "plt.figure(1, figsize=(16,12))\n",
        "_= plt.plot(df['Adj Close'])"
      ],
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/plain": "<Figure size 1152x864 with 1 Axes>",
            "image/png": "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t05jx8FKYiJC2z3/2rMz2JBbxhd7DvGHD7MBuOuiYYHpqSIiIiI9iYKniMgpmnVWPyakx7Ahr4wJA2I7dE5KTB/+9O3JAFw/LSOwP+fAhMhAwaH2eNwufnf1BKy1/Nc/s/kqv4ybpg8+4XkiIiIi3cE033fOaZmZmTYrK6vLXk9EpKtU1jZw72sbGJsWwx0XDuvu5oiIiIh0C2PMGmtt5rHPa8RTRCQIosLcPHPDlO5uhoiIiEiPpOJCIiIiIiIi4igFTxEREREREXGUgqeIiIiIiIg4SsFTREREREREHKXgKSIiIiIiIo5S8BQRERERERFHKXiKiIiIiIiIoxQ8RURERERExFEKniIiIiIiIuIoBU8RERERERFxlIKniIiIiIiIOErBU0RERERERByl4CkiIiIiIiKOUvAUERERERERRyl4ioiIiIiIiKMUPEVERERERMRRCp4iIiIiIiLiKAVPERERERERcZSCp4iIiIiIiDhKwVNEREREREQcpeApIiIiIiIijlLwFBEREREREUcpeIqIiIiIiIijFDxFRERERETEUQqeIiIiIiIi4igFTxEREREREXGUgqeIiIiIiIg4SsFTREREREREHGWstV33YsYUAXu77AVPXiJQ3N2NEOkE9V05XanvyulKfVdOV+q74rSB1tqkY5/s0uDZ0xljsqy1md3dDpGTpb4rpyv1XTldqe/K6Up9V7qLptqKiIiIiIiIoxQ8RURERERExFEKni09190NEOkk9V05XanvyulKfVdOV+q70i20xlNEREREREQcpRFPERERERERcVSvDp7GmAHGmI+MMV8ZY7YYY37ofz7eGPOBMSbb//84//MjjTGrjTG1xpiftHG9EGPMOmPMkq6+FzmzBLPvGmP2GGM2GWPWG2OyuuN+5MwR5L4ba4x53RizzRiz1Rhzbnfck5wZgtV3jTEj/O+3Tf+VG2N+1E23JWeAIL/v3u2/xmZjzCvGmPDuuCfpnXr1VFtjTAqQYq1da4zpC6wBrgBuAkqstb8yxtwHxFlrf2aM6QcM9B9Taq194pjr3QNkAtHW2vlddydypglm3zXG7AEyrbXas0scF+S++xKw0lq7wBjjASKstYe79IbkjBHszwz+a4YA+4Fp1tqevI+5nMaC1XeNMWnAKmC0tfaIMWYRsNRa+2JX35P0Tr16xNNaW2CtXet/XAFsBdKAy4GX/Ie9hO8vHtbaQmvtl0D9sdcyxqQDXwcWON9yOdMFs++KdKVg9V1jTAxwPvCC/7g6hU5xkkPvu7OBHIVOcVKQ+64b6GOMcQMRQL6zrZczSa8Ons0ZYwYBk4DPgWRrbYH/WweA5A5c4vfATwGvE+0TOZ4g9F0LvG+MWWOM+Z4zrRRp7RT77mCgCPizf4nDAmNMpGONFWkmCO+7Ta4FXglu60SO71T6rrV2P/AEsA8oAMqste8711o505wRwdMYEwW8AfzIWlve/HvWN9e43fnGxpj5QKG1do1zrRRp7VT7rt8Ma+1kYB5whzHm/OC3VKSlIPRdNzAZeMZaOwmoAu5zoq0izQXpfRf/9PDLgNeC3kiRNgTh824cvlHSwUAqEGmMucGh5soZqNcHT2NMKL6/hAuttW/6nz7onw/fNC++8ASXmQ5c5l8r9ypwkTHmrw41WQQIWt9t+g0m1tpC4O/AVGdaLOITpL6bB+RZaz/3f/06viAq4phgve/6zQPWWmsPBr+lIi0Fqe/OAXZba4ustfXAm8B5TrVZzjy9OngaYwy+9UFbrbVPNvvWYuBG/+Mbgbfbu4619n5rbbq1dhC+aTPLrLX6DZA4Jlh91xgT6S80gH+a4lxgc/BbLOITxPfdA0CuMWaE/6nZwFdBbq5IQLD6bjPXoWm20gWC2Hf3AecYYyL815yNb72oSFD09qq2M4CVwCaOrs18AN+890VABrAXuNpaW2KM6Q9kAdH+4yvxVfYqb3bNC4CfqKqtOClYfRdIxDfKCb6piy9bax/tqvuQM08w33eNMRPxFXTzALuAf7PWlnbh7cgZJMh9NxLfh/gh1tqyrr0TOdMEue/+B3AN0ACsA26x1tZ25f1I79Wrg6eIiIiIiIh0v1491VZERERERES6n4KniIiIiIiIOErBU0RERERERByl4CkiIiIiIiKOUvAUERERERERRyl4ioiIiIiIiKMUPEVERERERMRRCp4iIiIiIiLiqP8P/C0cvA3HscQAAAAASUVORK5CYII=\n"
          },
          "metadata": {
            "needs_background": "light"
          }
        }
      ],
      "execution_count": 5,
      "metadata": {
        "collapsed": true,
        "jupyter": {
          "source_hidden": false,
          "outputs_hidden": false
        },
        "nteract": {
          "transient": {
            "deleting": false
          }
        },
        "execution": {
          "iopub.status.busy": "2021-06-10T01:48:35.624Z",
          "iopub.execute_input": "2021-06-10T01:48:35.635Z",
          "iopub.status.idle": "2021-06-10T01:48:35.655Z",
          "shell.execute_reply": "2021-06-10T01:48:35.067Z"
        }
      }
    },
    {
      "cell_type": "code",
      "source": [
        "df['Returns'] = df['Adj Close'].pct_change()"
      ],
      "outputs": [],
      "execution_count": 6,
      "metadata": {
        "collapsed": true,
        "jupyter": {
          "source_hidden": false,
          "outputs_hidden": false
        },
        "nteract": {
          "transient": {
            "deleting": false
          }
        },
        "execution": {
          "iopub.status.busy": "2021-06-10T01:48:35.673Z",
          "iopub.execute_input": "2021-06-10T01:48:35.686Z",
          "shell.execute_reply": "2021-06-10T01:48:35.078Z",
          "iopub.status.idle": "2021-06-10T01:48:35.700Z"
        }
      }
    },
    {
      "cell_type": "code",
      "source": [
        "df['Log_returns'] = np.log(1+df['Returns'])"
      ],
      "outputs": [],
      "execution_count": 7,
      "metadata": {
        "collapsed": true,
        "jupyter": {
          "source_hidden": false,
          "outputs_hidden": false
        },
        "nteract": {
          "transient": {
            "deleting": false
          }
        },
        "execution": {
          "iopub.status.busy": "2021-06-10T01:48:35.718Z",
          "iopub.execute_input": "2021-06-10T01:48:35.731Z",
          "iopub.status.idle": "2021-06-10T01:48:35.744Z",
          "shell.execute_reply": "2021-06-10T01:48:35.089Z"
        }
      }
    },
    {
      "cell_type": "code",
      "source": [
        "df.head()"
      ],
      "outputs": [
        {
          "output_type": "execute_result",
          "execution_count": 8,
          "data": {
            "text/plain": "            Open  High   Low  Close  Adj Close    Volume   Returns  \\\nDate                                                                 \n2014-01-02  3.85  3.98  3.84   3.95       3.95  20548400       NaN   \n2014-01-03  3.98  4.00  3.88   4.00       4.00  22887200  0.012658   \n2014-01-06  4.01  4.18  3.99   4.13       4.13  42398300  0.032500   \n2014-01-07  4.19  4.25  4.11   4.18       4.18  42932100  0.012106   \n2014-01-08  4.23  4.26  4.14   4.18       4.18  30678700  0.000000   \n\n            Log_returns  \nDate                     \n2014-01-02          NaN  \n2014-01-03     0.012579  \n2014-01-06     0.031983  \n2014-01-07     0.012034  \n2014-01-08     0.000000  ",
            "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>Open</th>\n      <th>High</th>\n      <th>Low</th>\n      <th>Close</th>\n      <th>Adj Close</th>\n      <th>Volume</th>\n      <th>Returns</th>\n      <th>Log_returns</th>\n    </tr>\n    <tr>\n      <th>Date</th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>2014-01-02</th>\n      <td>3.85</td>\n      <td>3.98</td>\n      <td>3.84</td>\n      <td>3.95</td>\n      <td>3.95</td>\n      <td>20548400</td>\n      <td>NaN</td>\n      <td>NaN</td>\n    </tr>\n    <tr>\n      <th>2014-01-03</th>\n      <td>3.98</td>\n      <td>4.00</td>\n      <td>3.88</td>\n      <td>4.00</td>\n      <td>4.00</td>\n      <td>22887200</td>\n      <td>0.012658</td>\n      <td>0.012579</td>\n    </tr>\n    <tr>\n      <th>2014-01-06</th>\n      <td>4.01</td>\n      <td>4.18</td>\n      <td>3.99</td>\n      <td>4.13</td>\n      <td>4.13</td>\n      <td>42398300</td>\n      <td>0.032500</td>\n      <td>0.031983</td>\n    </tr>\n    <tr>\n      <th>2014-01-07</th>\n      <td>4.19</td>\n      <td>4.25</td>\n      <td>4.11</td>\n      <td>4.18</td>\n      <td>4.18</td>\n      <td>42932100</td>\n      <td>0.012106</td>\n      <td>0.012034</td>\n    </tr>\n    <tr>\n      <th>2014-01-08</th>\n      <td>4.23</td>\n      <td>4.26</td>\n      <td>4.14</td>\n      <td>4.18</td>\n      <td>4.18</td>\n      <td>30678700</td>\n      <td>0.000000</td>\n      <td>0.000000</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
          },
          "metadata": {}
        }
      ],
      "execution_count": 8,
      "metadata": {
        "collapsed": true,
        "jupyter": {
          "source_hidden": false,
          "outputs_hidden": false
        },
        "nteract": {
          "transient": {
            "deleting": false
          }
        },
        "execution": {
          "iopub.status.busy": "2021-06-10T01:48:35.763Z",
          "iopub.execute_input": "2021-06-10T01:48:35.775Z",
          "iopub.status.idle": "2021-06-10T01:48:35.798Z",
          "shell.execute_reply": "2021-06-10T01:48:35.101Z"
        }
      }
    },
    {
      "cell_type": "code",
      "source": [
        "df.dropna(inplace=True)\n",
        "X = df[['Adj Close', 'Log_returns']].values"
      ],
      "outputs": [],
      "execution_count": 9,
      "metadata": {
        "collapsed": true,
        "jupyter": {
          "source_hidden": false,
          "outputs_hidden": false
        },
        "nteract": {
          "transient": {
            "deleting": false
          }
        },
        "execution": {
          "iopub.status.busy": "2021-06-10T01:48:35.815Z",
          "iopub.execute_input": "2021-06-10T01:48:35.829Z",
          "iopub.status.idle": "2021-06-10T01:48:35.843Z",
          "shell.execute_reply": "2021-06-10T01:48:35.113Z"
        }
      }
    },
    {
      "cell_type": "code",
      "source": [
        "X"
      ],
      "outputs": [
        {
          "output_type": "execute_result",
          "execution_count": 10,
          "data": {
            "text/plain": "array([[4.00000000e+00, 1.25787701e-02],\n       [4.13000011e+00, 3.19830736e-02],\n       [4.17999983e+00, 1.20337708e-02],\n       ...,\n       [2.08999996e+01, 2.42142586e-02],\n       [2.22900009e+01, 6.43890478e-02],\n       [2.39799995e+01, 7.30819420e-02]])"
          },
          "metadata": {}
        }
      ],
      "execution_count": 10,
      "metadata": {
        "collapsed": true,
        "jupyter": {
          "source_hidden": false,
          "outputs_hidden": false
        },
        "nteract": {
          "transient": {
            "deleting": false
          }
        },
        "execution": {
          "iopub.status.busy": "2021-06-10T01:48:35.859Z",
          "iopub.execute_input": "2021-06-10T01:48:35.869Z",
          "iopub.status.idle": "2021-06-10T01:48:35.889Z",
          "shell.execute_reply": "2021-06-10T01:48:35.124Z"
        }
      }
    },
    {
      "cell_type": "code",
      "source": [
        "from sklearn.preprocessing import MinMaxScaler"
      ],
      "outputs": [],
      "execution_count": 11,
      "metadata": {
        "collapsed": true,
        "jupyter": {
          "source_hidden": false,
          "outputs_hidden": false
        },
        "nteract": {
          "transient": {
            "deleting": false
          }
        },
        "execution": {
          "iopub.status.busy": "2021-06-10T01:48:35.903Z",
          "iopub.execute_input": "2021-06-10T01:48:35.914Z",
          "iopub.status.idle": "2021-06-10T01:48:35.926Z",
          "shell.execute_reply": "2021-06-10T01:48:35.135Z"
        }
      }
    },
    {
      "cell_type": "code",
      "source": [
        "scaler = MinMaxScaler(feature_range=(0, 1)).fit(X)\n",
        "X_scaled = scaler.transform(X)"
      ],
      "outputs": [],
      "execution_count": 12,
      "metadata": {
        "collapsed": true,
        "jupyter": {
          "source_hidden": false,
          "outputs_hidden": false
        },
        "nteract": {
          "transient": {
            "deleting": false
          }
        },
        "execution": {
          "iopub.status.busy": "2021-06-10T01:48:35.942Z",
          "iopub.execute_input": "2021-06-10T01:48:35.951Z",
          "iopub.status.idle": "2021-06-10T01:48:35.965Z",
          "shell.execute_reply": "2021-06-10T01:48:35.147Z"
        }
      }
    },
    {
      "cell_type": "code",
      "source": [
        "X_scaled[:5]"
      ],
      "outputs": [
        {
          "output_type": "execute_result",
          "execution_count": 13,
          "data": {
            "text/plain": "array([[0.10644007, 0.4154788 ],\n       [0.11225403, 0.44327577],\n       [0.11449016, 0.41469808],\n       [0.11449016, 0.39745951],\n       [0.11046513, 0.36627908]])"
          },
          "metadata": {}
        }
      ],
      "execution_count": 13,
      "metadata": {
        "collapsed": true,
        "jupyter": {
          "source_hidden": false,
          "outputs_hidden": false
        },
        "nteract": {
          "transient": {
            "deleting": false
          }
        },
        "execution": {
          "iopub.status.busy": "2021-06-10T01:48:35.983Z",
          "iopub.execute_input": "2021-06-10T01:48:35.994Z",
          "iopub.status.idle": "2021-06-10T01:48:36.014Z",
          "shell.execute_reply": "2021-06-10T01:48:35.159Z"
        }
      }
    },
    {
      "cell_type": "code",
      "source": [
        "y = [x[0] for x in X_scaled]"
      ],
      "outputs": [],
      "execution_count": 14,
      "metadata": {
        "collapsed": true,
        "jupyter": {
          "source_hidden": false,
          "outputs_hidden": false
        },
        "nteract": {
          "transient": {
            "deleting": false
          }
        },
        "execution": {
          "iopub.status.busy": "2021-06-10T01:48:36.031Z",
          "iopub.execute_input": "2021-06-10T01:48:36.044Z",
          "iopub.status.idle": "2021-06-10T01:48:36.059Z",
          "shell.execute_reply": "2021-06-10T01:48:35.171Z"
        }
      }
    },
    {
      "cell_type": "code",
      "source": [
        "y[:5]"
      ],
      "outputs": [
        {
          "output_type": "execute_result",
          "execution_count": 15,
          "data": {
            "text/plain": "[0.10644007354488252,\n 0.11225403227162939,\n 0.11449015547967875,\n 0.11449015547967875,\n 0.110465125175008]"
          },
          "metadata": {}
        }
      ],
      "execution_count": 15,
      "metadata": {
        "collapsed": true,
        "jupyter": {
          "source_hidden": false,
          "outputs_hidden": false
        },
        "nteract": {
          "transient": {
            "deleting": false
          }
        },
        "execution": {
          "iopub.status.busy": "2021-06-10T01:48:36.074Z",
          "iopub.execute_input": "2021-06-10T01:48:36.085Z",
          "iopub.status.idle": "2021-06-10T01:48:36.103Z",
          "shell.execute_reply": "2021-06-10T01:48:35.183Z"
        }
      }
    },
    {
      "cell_type": "code",
      "source": [
        "# Train Test Split\n",
        "split = int(len(X_scaled) * 0.8)\n",
        "print(split)"
      ],
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "936\n"
          ]
        }
      ],
      "execution_count": 16,
      "metadata": {
        "collapsed": true,
        "jupyter": {
          "source_hidden": false,
          "outputs_hidden": false
        },
        "nteract": {
          "transient": {
            "deleting": false
          }
        },
        "execution": {
          "iopub.status.busy": "2021-06-10T01:48:36.120Z",
          "iopub.execute_input": "2021-06-10T01:48:36.134Z",
          "iopub.status.idle": "2021-06-10T01:48:36.153Z",
          "shell.execute_reply": "2021-06-10T01:48:35.195Z"
        }
      }
    },
    {
      "cell_type": "code",
      "source": [
        "X_train = X_scaled[:split]\n",
        "X_test = X_scaled[split : len(X_scaled)]\n",
        "y_train = y[:split]\n",
        "y_test = y[split : len(y)]"
      ],
      "outputs": [],
      "execution_count": 17,
      "metadata": {
        "collapsed": true,
        "jupyter": {
          "source_hidden": false,
          "outputs_hidden": false
        },
        "nteract": {
          "transient": {
            "deleting": false
          }
        },
        "execution": {
          "iopub.status.busy": "2021-06-10T01:48:36.170Z",
          "iopub.execute_input": "2021-06-10T01:48:36.182Z",
          "iopub.status.idle": "2021-06-10T01:48:36.196Z",
          "shell.execute_reply": "2021-06-10T01:48:35.208Z"
        }
      }
    },
    {
      "cell_type": "code",
      "source": [
        "assert len(X_train) == len(y_train)\n",
        "assert len(X_test) == len(y_test)\n"
      ],
      "outputs": [],
      "execution_count": 18,
      "metadata": {
        "collapsed": true,
        "jupyter": {
          "source_hidden": false,
          "outputs_hidden": false
        },
        "nteract": {
          "transient": {
            "deleting": false
          }
        },
        "execution": {
          "iopub.status.busy": "2021-06-10T01:48:36.214Z",
          "iopub.execute_input": "2021-06-10T01:48:36.225Z",
          "iopub.status.idle": "2021-06-10T01:48:36.238Z",
          "shell.execute_reply": "2021-06-10T01:48:35.222Z"
        }
      }
    },
    {
      "cell_type": "code",
      "source": [
        "# Labeling\n",
        "n = 3\n",
        "Xtrain = []\n",
        "ytrain = []\n",
        "Xtest = []\n",
        "ytest = []\n",
        "\n",
        "for i in range(n, len(X_train)):\n",
        "  Xtrain.append(X_train[i-n: i, : X_train.shape[1]])\n",
        "  ytrain.append(y_train[i]) # Predict next record\n",
        "\n",
        "for i in range(n, len(X_test)):\n",
        "  Xtest.append(X_test[i-n: i, : X_test.shape[1]])\n",
        "  ytest.append(y_test[i]) # Predict next record\n"
      ],
      "outputs": [],
      "execution_count": 19,
      "metadata": {
        "collapsed": true,
        "jupyter": {
          "source_hidden": false,
          "outputs_hidden": false
        },
        "nteract": {
          "transient": {
            "deleting": false
          }
        },
        "execution": {
          "iopub.status.busy": "2021-06-10T01:48:36.256Z",
          "iopub.execute_input": "2021-06-10T01:48:36.267Z",
          "iopub.status.idle": "2021-06-10T01:48:36.281Z",
          "shell.execute_reply": "2021-06-10T01:48:35.237Z"
        }
      }
    },
    {
      "cell_type": "code",
      "source": [
        "df.head()"
      ],
      "outputs": [
        {
          "output_type": "execute_result",
          "execution_count": 20,
          "data": {
            "text/plain": "            Open  High   Low  Close  Adj Close    Volume   Returns  \\\nDate                                                                 \n2014-01-03  3.98  4.00  3.88   4.00       4.00  22887200  0.012658   \n2014-01-06  4.01  4.18  3.99   4.13       4.13  42398300  0.032500   \n2014-01-07  4.19  4.25  4.11   4.18       4.18  42932100  0.012106   \n2014-01-08  4.23  4.26  4.14   4.18       4.18  30678700  0.000000   \n2014-01-09  4.20  4.23  4.05   4.09       4.09  30667600 -0.021531   \n\n            Log_returns  \nDate                     \n2014-01-03     0.012579  \n2014-01-06     0.031983  \n2014-01-07     0.012034  \n2014-01-08     0.000000  \n2014-01-09    -0.021766  ",
            "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>Open</th>\n      <th>High</th>\n      <th>Low</th>\n      <th>Close</th>\n      <th>Adj Close</th>\n      <th>Volume</th>\n      <th>Returns</th>\n      <th>Log_returns</th>\n    </tr>\n    <tr>\n      <th>Date</th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>2014-01-03</th>\n      <td>3.98</td>\n      <td>4.00</td>\n      <td>3.88</td>\n      <td>4.00</td>\n      <td>4.00</td>\n      <td>22887200</td>\n      <td>0.012658</td>\n      <td>0.012579</td>\n    </tr>\n    <tr>\n      <th>2014-01-06</th>\n      <td>4.01</td>\n      <td>4.18</td>\n      <td>3.99</td>\n      <td>4.13</td>\n      <td>4.13</td>\n      <td>42398300</td>\n      <td>0.032500</td>\n      <td>0.031983</td>\n    </tr>\n    <tr>\n      <th>2014-01-07</th>\n      <td>4.19</td>\n      <td>4.25</td>\n      <td>4.11</td>\n      <td>4.18</td>\n      <td>4.18</td>\n      <td>42932100</td>\n      <td>0.012106</td>\n      <td>0.012034</td>\n    </tr>\n    <tr>\n      <th>2014-01-08</th>\n      <td>4.23</td>\n      <td>4.26</td>\n      <td>4.14</td>\n      <td>4.18</td>\n      <td>4.18</td>\n      <td>30678700</td>\n      <td>0.000000</td>\n      <td>0.000000</td>\n    </tr>\n    <tr>\n      <th>2014-01-09</th>\n      <td>4.20</td>\n      <td>4.23</td>\n      <td>4.05</td>\n      <td>4.09</td>\n      <td>4.09</td>\n      <td>30667600</td>\n      <td>-0.021531</td>\n      <td>-0.021766</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
          },
          "metadata": {}
        }
      ],
      "execution_count": 20,
      "metadata": {
        "collapsed": true,
        "jupyter": {
          "source_hidden": false,
          "outputs_hidden": false
        },
        "nteract": {
          "transient": {
            "deleting": false
          }
        },
        "execution": {
          "iopub.status.busy": "2021-06-10T01:48:36.299Z",
          "iopub.execute_input": "2021-06-10T01:48:36.311Z",
          "iopub.status.idle": "2021-06-10T01:48:36.333Z",
          "shell.execute_reply": "2021-06-10T01:48:35.250Z"
        }
      }
    },
    {
      "cell_type": "code",
      "source": [
        "Xtrain[0]"
      ],
      "outputs": [
        {
          "output_type": "execute_result",
          "execution_count": 21,
          "data": {
            "text/plain": "array([[0.10644007, 0.4154788 ],\n       [0.11225403, 0.44327577],\n       [0.11449016, 0.41469808]])"
          },
          "metadata": {}
        }
      ],
      "execution_count": 21,
      "metadata": {
        "collapsed": true,
        "jupyter": {
          "source_hidden": false,
          "outputs_hidden": false
        },
        "nteract": {
          "transient": {
            "deleting": false
          }
        },
        "execution": {
          "iopub.status.busy": "2021-06-10T01:48:36.352Z",
          "iopub.execute_input": "2021-06-10T01:48:36.364Z",
          "iopub.status.idle": "2021-06-10T01:48:36.383Z",
          "shell.execute_reply": "2021-06-10T01:48:35.262Z"
        }
      }
    },
    {
      "cell_type": "code",
      "source": [
        "ytrain[0]"
      ],
      "outputs": [
        {
          "output_type": "execute_result",
          "execution_count": 22,
          "data": {
            "text/plain": "0.11449015547967875"
          },
          "metadata": {}
        }
      ],
      "execution_count": 22,
      "metadata": {
        "collapsed": true,
        "jupyter": {
          "source_hidden": false,
          "outputs_hidden": false
        },
        "nteract": {
          "transient": {
            "deleting": false
          }
        },
        "execution": {
          "iopub.status.busy": "2021-06-10T01:48:36.401Z",
          "iopub.execute_input": "2021-06-10T01:48:36.412Z",
          "iopub.status.idle": "2021-06-10T01:48:36.432Z",
          "shell.execute_reply": "2021-06-10T01:48:35.273Z"
        }
      }
    },
    {
      "cell_type": "code",
      "source": [
        "val = np.array(ytrain[0])\n",
        "val = np.c_[val, np.zeros(val.shape)]"
      ],
      "outputs": [],
      "execution_count": 23,
      "metadata": {
        "collapsed": true,
        "jupyter": {
          "source_hidden": false,
          "outputs_hidden": false
        },
        "nteract": {
          "transient": {
            "deleting": false
          }
        },
        "execution": {
          "iopub.status.busy": "2021-06-10T01:48:36.452Z",
          "iopub.execute_input": "2021-06-10T01:48:36.465Z",
          "iopub.status.idle": "2021-06-10T01:48:36.479Z",
          "shell.execute_reply": "2021-06-10T01:48:35.284Z"
        }
      }
    },
    {
      "cell_type": "code",
      "source": [
        "scaler.inverse_transform(val)"
      ],
      "outputs": [
        {
          "output_type": "execute_result",
          "execution_count": 24,
          "data": {
            "text/plain": "array([[ 4.17999983, -0.27745556]])"
          },
          "metadata": {}
        }
      ],
      "execution_count": 24,
      "metadata": {
        "collapsed": true,
        "jupyter": {
          "source_hidden": false,
          "outputs_hidden": false
        },
        "nteract": {
          "transient": {
            "deleting": false
          }
        },
        "execution": {
          "iopub.status.busy": "2021-06-10T01:48:36.500Z",
          "iopub.execute_input": "2021-06-10T01:48:36.514Z",
          "iopub.status.idle": "2021-06-10T01:48:36.534Z",
          "shell.execute_reply": "2021-06-10T01:48:35.296Z"
        }
      }
    },
    {
      "cell_type": "code",
      "source": [
        "Xtrain, ytrain = (np.array(Xtrain), np.array(ytrain))\n",
        "Xtrain = np.reshape(Xtrain, (Xtrain.shape[0], Xtrain.shape[1], Xtrain.shape[2]))\n",
        "\n",
        "Xtest, ytest = (np.array(Xtest), np.array(ytest))\n",
        "Xtest = np.reshape(Xtest, (Xtest.shape[0], Xtest.shape[1], Xtest.shape[2]))"
      ],
      "outputs": [],
      "execution_count": 25,
      "metadata": {
        "collapsed": true,
        "jupyter": {
          "source_hidden": false,
          "outputs_hidden": false
        },
        "nteract": {
          "transient": {
            "deleting": false
          }
        },
        "execution": {
          "iopub.status.busy": "2021-06-10T01:48:36.552Z",
          "iopub.execute_input": "2021-06-10T01:48:36.564Z",
          "shell.execute_reply": "2021-06-10T01:48:35.309Z",
          "iopub.status.idle": "2021-06-10T01:48:36.578Z"
        }
      }
    },
    {
      "cell_type": "code",
      "source": [
        "print(Xtrain.shape)\n",
        "print(ytrain.shape)\n",
        "print('-'*10)\n",
        "print(Xtest.shape)\n",
        "print(Xtest.shape)"
      ],
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "(933, 3, 2)\n",
            "(933,)\n",
            "----------\n",
            "(231, 3, 2)\n",
            "(231, 3, 2)\n"
          ]
        }
      ],
      "execution_count": 26,
      "metadata": {
        "collapsed": true,
        "jupyter": {
          "source_hidden": false,
          "outputs_hidden": false
        },
        "nteract": {
          "transient": {
            "deleting": false
          }
        },
        "execution": {
          "iopub.status.busy": "2021-06-10T01:48:36.595Z",
          "iopub.execute_input": "2021-06-10T01:48:36.607Z",
          "iopub.status.idle": "2021-06-10T01:48:36.629Z",
          "shell.execute_reply": "2021-06-10T01:48:35.322Z"
        }
      }
    },
    {
      "cell_type": "code",
      "source": [
        "# LSTM Model\n",
        "from keras.models import Sequential\n",
        "from keras.layers import LSTM, Dense"
      ],
      "outputs": [
        {
          "output_type": "stream",
          "name": "stderr",
          "text": [
            "Using TensorFlow backend.\n"
          ]
        }
      ],
      "execution_count": 27,
      "metadata": {
        "collapsed": true,
        "jupyter": {
          "source_hidden": false,
          "outputs_hidden": false
        },
        "nteract": {
          "transient": {
            "deleting": false
          }
        },
        "execution": {
          "iopub.status.busy": "2021-06-10T01:48:36.646Z",
          "iopub.execute_input": "2021-06-10T01:48:36.658Z",
          "iopub.status.idle": "2021-06-10T01:48:36.678Z",
          "shell.execute_reply": "2021-06-10T01:48:35.335Z"
        }
      }
    },
    {
      "cell_type": "code",
      "source": [
        "model = Sequential()\n",
        "model.add(LSTM(4, input_shape=(Xtrain.shape[1], Xtrain.shape[2])))\n",
        "model.add(Dense(1))\n",
        "model.compile(loss='mean_squared_error', optimizer='adam')\n",
        "model.fit(Xtrain, ytrain, epochs=100, validation_data=(Xtest, ytest), batch_size=16, verbose=1)"
      ],
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "WARNING:tensorflow:From C:\\Users\\Tin Hang\\Anaconda3\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:68: The name tf.get_default_graph is deprecated. Please use tf.compat.v1.get_default_graph instead.\n",
            "\n",
            "WARNING:tensorflow:From C:\\Users\\Tin Hang\\Anaconda3\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:507: The name tf.placeholder is deprecated. Please use tf.compat.v1.placeholder instead.\n",
            "\n",
            "WARNING:tensorflow:From C:\\Users\\Tin Hang\\Anaconda3\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:3831: The name tf.random_uniform is deprecated. Please use tf.random.uniform instead.\n",
            "\n",
            "WARNING:tensorflow:From C:\\Users\\Tin Hang\\Anaconda3\\lib\\site-packages\\keras\\optimizers.py:757: The name tf.train.Optimizer is deprecated. Please use tf.compat.v1.train.Optimizer instead.\n",
            "\n",
            "WARNING:tensorflow:From C:\\Users\\Tin Hang\\Anaconda3\\lib\\site-packages\\tensorflow\\python\\ops\\math_grad.py:1250: add_dispatch_support.<locals>.wrapper (from tensorflow.python.ops.array_ops) is deprecated and will be removed in a future version.\n",
            "Instructions for updating:\n",
            "Use tf.where in 2.0, which has the same broadcast rule as np.where\n",
            "WARNING:tensorflow:From C:\\Users\\Tin Hang\\Anaconda3\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:976: The name tf.assign_add is deprecated. Please use tf.compat.v1.assign_add instead.\n",
            "\n",
            "WARNING:tensorflow:From C:\\Users\\Tin Hang\\Anaconda3\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:963: The name tf.assign is deprecated. Please use tf.compat.v1.assign instead.\n",
            "\n",
            "Train on 933 samples, validate on 231 samples\n",
            "Epoch 1/100\n",
            "933/933 [==============================] - 1s 629us/step - loss: 0.0233 - val_loss: 0.0756\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 2/100\n",
            "933/933 [==============================] - 0s 105us/step - loss: 0.0142 - val_loss: 0.0488\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 3/100\n",
            "933/933 [==============================] - 0s 109us/step - loss: 0.0072 - val_loss: 0.0223\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 4/100\n",
            "933/933 [==============================] - 0s 107us/step - loss: 0.0025 - val_loss: 0.0071\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 5/100\n",
            "933/933 [==============================] - 0s 115us/step - loss: 5.9437e-04 - val_loss: 0.0026\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 6/100\n",
            "933/933 [==============================] - 0s 119us/step - loss: 2.7528e-04 - val_loss: 0.0019\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 7/100\n",
            "933/933 [==============================] - 0s 122us/step - loss: 2.4808e-04 - val_loss: 0.0018\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 8/100\n",
            "933/933 [==============================] - 0s 122us/step - loss: 2.4517e-04 - val_loss: 0.0018\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 9/100\n",
            "933/933 [==============================] - 0s 113us/step - loss: 2.3916e-04 - val_loss: 0.0016\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 10/100\n",
            "933/933 [==============================] - 0s 120us/step - loss: 2.3054e-04 - val_loss: 0.0016\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 11/100\n",
            "933/933 [==============================] - 0s 110us/step - loss: 2.2420e-04 - val_loss: 0.0016\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 12/100\n",
            "933/933 [==============================] - 0s 104us/step - loss: 2.2111e-04 - val_loss: 0.0015\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 13/100\n",
            "933/933 [==============================] - 0s 110us/step - loss: 2.2160e-04 - val_loss: 0.0015\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 14/100\n",
            "933/933 [==============================] - 0s 109us/step - loss: 2.1039e-04 - val_loss: 0.0015\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 15/100\n",
            "933/933 [==============================] - 0s 113us/step - loss: 2.0456e-04 - val_loss: 0.0015\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 16/100\n",
            "933/933 [==============================] - 0s 111us/step - loss: 2.0451e-04 - val_loss: 0.0015\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 17/100\n",
            "933/933 [==============================] - 0s 119us/step - loss: 1.9480e-04 - val_loss: 0.0014\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 18/100\n",
            "933/933 [==============================] - 0s 111us/step - loss: 1.9133e-04 - val_loss: 0.0015\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 19/100\n",
            "933/933 [==============================] - 0s 112us/step - loss: 1.8568e-04 - val_loss: 0.0014\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 20/100\n",
            "933/933 [==============================] - 0s 108us/step - loss: 1.8106e-04 - val_loss: 0.0014\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 21/100\n",
            "933/933 [==============================] - 0s 104us/step - loss: 1.7974e-04 - val_loss: 0.0014\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 22/100\n",
            "933/933 [==============================] - 0s 106us/step - loss: 1.7519e-04 - val_loss: 0.0013\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 23/100\n",
            "933/933 [==============================] - 0s 110us/step - loss: 1.7467e-04 - val_loss: 0.0013\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 24/100\n",
            "933/933 [==============================] - 0s 110us/step - loss: 1.6913e-04 - val_loss: 0.0014\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 25/100\n",
            "933/933 [==============================] - 0s 106us/step - loss: 1.7055e-04 - val_loss: 0.0013\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 26/100\n",
            "933/933 [==============================] - 0s 102us/step - loss: 1.6775e-04 - val_loss: 0.0013\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 27/100\n",
            "933/933 [==============================] - 0s 100us/step - loss: 1.6285e-04 - val_loss: 0.0012\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 28/100\n",
            "933/933 [==============================] - 0s 100us/step - loss: 1.6259e-04 - val_loss: 0.0013\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 29/100\n",
            "933/933 [==============================] - 0s 99us/step - loss: 1.6272e-04 - val_loss: 0.0012\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 30/100\n",
            "933/933 [==============================] - 0s 102us/step - loss: 1.5892e-04 - val_loss: 0.0013\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 31/100\n",
            "933/933 [==============================] - 0s 107us/step - loss: 1.5990e-04 - val_loss: 0.0012\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 32/100\n",
            "933/933 [==============================] - 0s 102us/step - loss: 1.5778e-04 - val_loss: 0.0012\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 33/100\n",
            "933/933 [==============================] - 0s 103us/step - loss: 1.5480e-04 - val_loss: 0.0013\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 34/100\n",
            "933/933 [==============================] - 0s 103us/step - loss: 1.5501e-04 - val_loss: 0.0012\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 35/100\n",
            "933/933 [==============================] - 0s 108us/step - loss: 1.5430e-04 - val_loss: 0.0012\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 36/100\n",
            "933/933 [==============================] - 0s 119us/step - loss: 1.5265e-04 - val_loss: 0.0012\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 37/100\n",
            "933/933 [==============================] - 0s 118us/step - loss: 1.5114e-04 - val_loss: 0.0012\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 38/100\n",
            "933/933 [==============================] - 0s 117us/step - loss: 1.6305e-04 - val_loss: 0.0011\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 39/100\n",
            "933/933 [==============================] - 0s 112us/step - loss: 1.5196e-04 - val_loss: 0.0012\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 40/100\n",
            "933/933 [==============================] - 0s 118us/step - loss: 1.5070e-04 - val_loss: 0.0012\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 41/100\n",
            "933/933 [==============================] - 0s 104us/step - loss: 1.4981e-04 - val_loss: 0.0013\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 42/100\n",
            "933/933 [==============================] - 0s 102us/step - loss: 1.4921e-04 - val_loss: 0.0013\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 43/100\n",
            "933/933 [==============================] - 0s 103us/step - loss: 1.5249e-04 - val_loss: 0.0012\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 44/100\n",
            "933/933 [==============================] - 0s 105us/step - loss: 1.5054e-04 - val_loss: 0.0012\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 45/100\n",
            "933/933 [==============================] - 0s 105us/step - loss: 1.4722e-04 - val_loss: 0.0012\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 46/100\n",
            "933/933 [==============================] - 0s 113us/step - loss: 1.5288e-04 - val_loss: 0.0011\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 47/100\n",
            "933/933 [==============================] - 0s 107us/step - loss: 1.5320e-04 - val_loss: 0.0012\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 48/100\n",
            "933/933 [==============================] - 0s 103us/step - loss: 1.4705e-04 - val_loss: 0.0011\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 49/100\n",
            "933/933 [==============================] - 0s 102us/step - loss: 1.4712e-04 - val_loss: 0.0013\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 50/100\n",
            "933/933 [==============================] - 0s 104us/step - loss: 1.4737e-04 - val_loss: 0.0012\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 51/100\n",
            "933/933 [==============================] - 0s 104us/step - loss: 1.4938e-04 - val_loss: 0.0012\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 52/100\n",
            "933/933 [==============================] - 0s 104us/step - loss: 1.5692e-04 - val_loss: 0.0011\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 53/100\n",
            "933/933 [==============================] - 0s 104us/step - loss: 1.4606e-04 - val_loss: 0.0014\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 54/100\n",
            "933/933 [==============================] - 0s 106us/step - loss: 1.4592e-04 - val_loss: 0.0011\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 55/100\n",
            "933/933 [==============================] - 0s 105us/step - loss: 1.5475e-04 - val_loss: 0.0013\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 56/100\n",
            "933/933 [==============================] - 0s 105us/step - loss: 1.4665e-04 - val_loss: 0.0011\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 57/100\n",
            "933/933 [==============================] - 0s 108us/step - loss: 1.4667e-04 - val_loss: 0.0011\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 58/100\n",
            "933/933 [==============================] - 0s 111us/step - loss: 1.5122e-04 - val_loss: 0.0013\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 59/100\n",
            "933/933 [==============================] - 0s 114us/step - loss: 1.4497e-04 - val_loss: 0.0013\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 60/100\n",
            "933/933 [==============================] - 0s 110us/step - loss: 1.4710e-04 - val_loss: 0.0013\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 61/100\n",
            "933/933 [==============================] - 0s 111us/step - loss: 1.4892e-04 - val_loss: 0.0013\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 62/100\n",
            "933/933 [==============================] - 0s 102us/step - loss: 1.4469e-04 - val_loss: 0.0012\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 63/100\n",
            "933/933 [==============================] - 0s 100us/step - loss: 1.4562e-04 - val_loss: 0.0013\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 64/100\n",
            "933/933 [==============================] - 0s 98us/step - loss: 1.5005e-04 - val_loss: 0.0012\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 65/100\n",
            "933/933 [==============================] - 0s 102us/step - loss: 1.4513e-04 - val_loss: 0.0012\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 66/100\n",
            "933/933 [==============================] - 0s 107us/step - loss: 1.4912e-04 - val_loss: 0.0013\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 67/100\n",
            "933/933 [==============================] - 0s 115us/step - loss: 1.5076e-04 - val_loss: 0.0012\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 68/100\n",
            "933/933 [==============================] - 0s 113us/step - loss: 1.4532e-04 - val_loss: 0.0012\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 69/100\n",
            "933/933 [==============================] - 0s 111us/step - loss: 1.4882e-04 - val_loss: 0.0013\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 70/100\n",
            "933/933 [==============================] - 0s 110us/step - loss: 1.4633e-04 - val_loss: 0.0013\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 71/100\n",
            "933/933 [==============================] - 0s 103us/step - loss: 1.4244e-04 - val_loss: 0.0012\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 72/100\n",
            "933/933 [==============================] - 0s 107us/step - loss: 1.4206e-04 - val_loss: 0.0015\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 73/100\n",
            "933/933 [==============================] - 0s 111us/step - loss: 1.4939e-04 - val_loss: 0.0012\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 74/100\n",
            "933/933 [==============================] - 0s 111us/step - loss: 1.4902e-04 - val_loss: 0.0013\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 75/100\n",
            "933/933 [==============================] - 0s 111us/step - loss: 1.4860e-04 - val_loss: 0.0012\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 76/100\n",
            "933/933 [==============================] - 0s 109us/step - loss: 1.4594e-04 - val_loss: 0.0012\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 77/100\n",
            "933/933 [==============================] - 0s 104us/step - loss: 1.4569e-04 - val_loss: 0.0012\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 78/100\n",
            "933/933 [==============================] - 0s 104us/step - loss: 1.4237e-04 - val_loss: 0.0013\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 79/100\n",
            "933/933 [==============================] - 0s 102us/step - loss: 1.4933e-04 - val_loss: 0.0013\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 80/100\n",
            "933/933 [==============================] - 0s 107us/step - loss: 1.4950e-04 - val_loss: 0.0014\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 81/100\n",
            "933/933 [==============================] - 0s 107us/step - loss: 1.4668e-04 - val_loss: 0.0013\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 82/100\n",
            "933/933 [==============================] - 0s 101us/step - loss: 1.4931e-04 - val_loss: 0.0013\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 83/100\n",
            "933/933 [==============================] - 0s 103us/step - loss: 1.4395e-04 - val_loss: 0.0013\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 84/100\n",
            "933/933 [==============================] - 0s 102us/step - loss: 1.4674e-04 - val_loss: 0.0012\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 85/100\n",
            "933/933 [==============================] - 0s 103us/step - loss: 1.4245e-04 - val_loss: 0.0012\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 86/100\n",
            "933/933 [==============================] - 0s 105us/step - loss: 1.4569e-04 - val_loss: 0.0013\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 87/100\n",
            "933/933 [==============================] - 0s 104us/step - loss: 1.5337e-04 - val_loss: 0.0013\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 88/100\n",
            "933/933 [==============================] - 0s 101us/step - loss: 1.4389e-04 - val_loss: 0.0012\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 89/100\n",
            "933/933 [==============================] - 0s 104us/step - loss: 1.4558e-04 - val_loss: 0.0013\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 90/100\n",
            "933/933 [==============================] - 0s 104us/step - loss: 1.4612e-04 - val_loss: 0.0013\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 91/100\n",
            "933/933 [==============================] - 0s 107us/step - loss: 1.4906e-04 - val_loss: 0.0012\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 92/100\n",
            "933/933 [==============================] - 0s 104us/step - loss: 1.5249e-04 - val_loss: 0.0012\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 93/100\n",
            "933/933 [==============================] - 0s 103us/step - loss: 1.5087e-04 - val_loss: 0.0011\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 94/100\n",
            "933/933 [==============================] - 0s 102us/step - loss: 1.4647e-04 - val_loss: 0.0012\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 95/100\n",
            "933/933 [==============================] - 0s 105us/step - loss: 1.4351e-04 - val_loss: 0.0012\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 96/100\n",
            "933/933 [==============================] - 0s 105us/step - loss: 1.4806e-04 - val_loss: 0.0012\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 97/100\n",
            "933/933 [==============================] - 0s 105us/step - loss: 1.4514e-04 - val_loss: 0.0011\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 98/100\n",
            "933/933 [==============================] - 0s 102us/step - loss: 1.4323e-04 - val_loss: 0.0012\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 99/100\n",
            "933/933 [==============================] - 0s 104us/step - loss: 1.4622e-04 - val_loss: 0.0011\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
            "Epoch 100/100\n",
            "933/933 [==============================] - 0s 104us/step - loss: 1.4269e-04 - val_loss: 0.0012\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n"
          ]
        },
        {
          "output_type": "execute_result",
          "execution_count": 28,
          "data": {
            "text/plain": "<keras.callbacks.History at 0x1a7e56624a8>"
          },
          "metadata": {}
        }
      ],
      "execution_count": 28,
      "metadata": {
        "collapsed": true,
        "jupyter": {
          "source_hidden": false,
          "outputs_hidden": false
        },
        "nteract": {
          "transient": {
            "deleting": false
          }
        },
        "execution": {
          "iopub.status.busy": "2021-06-10T01:48:36.697Z",
          "iopub.execute_input": "2021-06-10T01:48:36.709Z",
          "iopub.status.idle": "2021-06-10T01:48:44.835Z",
          "shell.execute_reply": "2021-06-10T01:48:45.175Z"
        }
      }
    },
    {
      "cell_type": "code",
      "source": [
        "model.summary()"
      ],
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "_________________________________________________________________\n",
            "Layer (type)                 Output Shape              Param #   \n",
            "=================================================================\n",
            "lstm_1 (LSTM)                (None, 4)                 112       \n",
            "_________________________________________________________________\n",
            "dense_1 (Dense)              (None, 1)                 5         \n",
            "=================================================================\n",
            "Total params: 117\n",
            "Trainable params: 117\n",
            "Non-trainable params: 0\n",
            "_________________________________________________________________\n"
          ]
        }
      ],
      "execution_count": 29,
      "metadata": {
        "collapsed": true,
        "jupyter": {
          "source_hidden": false,
          "outputs_hidden": false
        },
        "nteract": {
          "transient": {
            "deleting": false
          }
        },
        "execution": {
          "iopub.status.busy": "2021-06-10T01:48:44.852Z",
          "iopub.execute_input": "2021-06-10T01:48:44.863Z",
          "iopub.status.idle": "2021-06-10T01:48:44.885Z",
          "shell.execute_reply": "2021-06-10T01:48:45.183Z"
        }
      }
    },
    {
      "cell_type": "code",
      "source": [
        "trainPredict = model.predict(Xtrain)\n",
        "testPredict = model.predict(Xtest)"
      ],
      "outputs": [],
      "execution_count": 30,
      "metadata": {
        "collapsed": true,
        "jupyter": {
          "source_hidden": false,
          "outputs_hidden": false
        },
        "nteract": {
          "transient": {
            "deleting": false
          }
        },
        "execution": {
          "iopub.status.busy": "2021-06-10T01:48:44.900Z",
          "iopub.execute_input": "2021-06-10T01:48:44.911Z",
          "shell.execute_reply": "2021-06-10T01:48:45.190Z",
          "iopub.status.idle": "2021-06-10T01:48:44.927Z"
        }
      }
    },
    {
      "cell_type": "code",
      "source": [
        "trainPredict = np.c_[trainPredict, np.zeros(trainPredict.shape)]\n",
        "testPredict = np.c_[testPredict, np.zeros(testPredict.shape)]"
      ],
      "outputs": [],
      "execution_count": 31,
      "metadata": {
        "collapsed": true,
        "jupyter": {
          "source_hidden": false,
          "outputs_hidden": false
        },
        "nteract": {
          "transient": {
            "deleting": false
          }
        },
        "execution": {
          "iopub.status.busy": "2021-06-10T01:48:44.945Z",
          "iopub.execute_input": "2021-06-10T01:48:44.956Z",
          "iopub.status.idle": "2021-06-10T01:48:44.973Z",
          "shell.execute_reply": "2021-06-10T01:48:45.196Z"
        }
      }
    },
    {
      "cell_type": "code",
      "source": [
        "# Invert Predictions\n",
        "trainPredict = scaler.inverse_transform(trainPredict)\n",
        "trainPredict = [x[0] for x in trainPredict]\n",
        "\n",
        "testPredict = scaler.inverse_transform(testPredict)\n",
        "testPredict = [x[0] for x in testPredict]"
      ],
      "outputs": [],
      "execution_count": 32,
      "metadata": {
        "collapsed": true,
        "jupyter": {
          "source_hidden": false,
          "outputs_hidden": false
        },
        "nteract": {
          "transient": {
            "deleting": false
          }
        },
        "execution": {
          "iopub.status.busy": "2021-06-10T01:48:44.988Z",
          "iopub.execute_input": "2021-06-10T01:48:44.998Z",
          "iopub.status.idle": "2021-06-10T01:48:45.014Z",
          "shell.execute_reply": "2021-06-10T01:48:45.202Z"
        }
      }
    },
    {
      "cell_type": "code",
      "source": [
        "print(trainPredict[:5])\n",
        "print(testPredict[:5])"
      ],
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "[4.098895637375323, 4.101054874894268, 3.999192374307234, 4.095202559887477, 4.036434681795861]\n",
            "[12.688085931470365, 12.549569536859476, 12.65854264432743, 12.719316492557585, 12.800484898080327]\n"
          ]
        }
      ],
      "execution_count": 33,
      "metadata": {
        "collapsed": true,
        "jupyter": {
          "source_hidden": false,
          "outputs_hidden": false
        },
        "nteract": {
          "transient": {
            "deleting": false
          }
        },
        "execution": {
          "iopub.status.busy": "2021-06-10T01:48:45.027Z",
          "iopub.execute_input": "2021-06-10T01:48:45.037Z",
          "iopub.status.idle": "2021-06-10T01:48:45.056Z",
          "shell.execute_reply": "2021-06-10T01:48:45.208Z"
        }
      }
    },
    {
      "cell_type": "code",
      "source": [
        "from sklearn.metrics import mean_squared_error"
      ],
      "outputs": [],
      "execution_count": 34,
      "metadata": {
        "collapsed": true,
        "jupyter": {
          "source_hidden": false,
          "outputs_hidden": false
        },
        "nteract": {
          "transient": {
            "deleting": false
          }
        },
        "execution": {
          "iopub.status.busy": "2021-06-10T01:48:45.071Z",
          "iopub.execute_input": "2021-06-10T01:48:45.081Z",
          "iopub.status.idle": "2021-06-10T01:48:45.097Z",
          "shell.execute_reply": "2021-06-10T01:48:45.214Z"
        }
      }
    },
    {
      "cell_type": "code",
      "source": [
        "# Calculate root mean squred error\n",
        "trainScore = mean_squared_error([x[0][0] for x in Xtrain], trainPredict, squared=False)\n",
        "print(\"Train Score: %.2f RMSE\" %  (trainScore))\n",
        "\n",
        "testScore = mean_squared_error([x[0][0] for x in Xtest], testPredict, squared=False)\n",
        "print(\"Test Score: %.2f RMSE\" %  (testScore))\n"
      ],
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Train Score: 6.49 RMSE\n",
            "Test Score: 12.59 RMSE\n"
          ]
        }
      ],
      "execution_count": 35,
      "metadata": {
        "collapsed": true,
        "jupyter": {
          "source_hidden": false,
          "outputs_hidden": false
        },
        "nteract": {
          "transient": {
            "deleting": false
          }
        },
        "execution": {
          "iopub.status.busy": "2021-06-10T01:48:45.110Z",
          "iopub.execute_input": "2021-06-10T01:48:45.119Z",
          "iopub.status.idle": "2021-06-10T01:48:45.137Z",
          "shell.execute_reply": "2021-06-10T01:48:45.220Z"
        }
      }
    }
  ],
  "metadata": {
    "kernel_info": {
      "name": "python3"
    },
    "language_info": {
      "name": "python",
      "version": "3.6.12",
      "mimetype": "text/x-python",
      "codemirror_mode": {
        "name": "ipython",
        "version": 3
      },
      "pygments_lexer": "ipython3",
      "nbconvert_exporter": "python",
      "file_extension": ".py"
    },
    "kernelspec": {
      "argv": [
        "C:/Users/Tin Hang/Anaconda3\\python.exe",
        "-m",
        "ipykernel_launcher",
        "-f",
        "{connection_file}"
      ],
      "display_name": "Python 3",
      "language": "python",
      "name": "python3"
    },
    "nteract": {
      "version": "0.28.0"
    }
  },
  "nbformat": 4,
  "nbformat_minor": 0
}